#ifndef __REFINED_ABSTRACTION_HPP__
#define __REFINED_ABSTRACTION_HPP__

#include "abstraction.hpp"
#include "abstract_imp.hpp"

class RefinedAbstraction: public Abstraction {
public:
	RefinedAbstraction(AbstractImp *imp) : m_imp(imp){ cout<<__func__<<endl; }
	~RefinedAbstraction() {cout<<__func__<<endl;}
	void operation() { m_imp->operation(); }
private:
	AbstractImp *m_imp;
};

#endif /* end of include guard */
